package controllers;

import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

import models.AdmCoral;
import models.Regente;
import models.Secretario;
import models.Usuario;
import play.db.DB;
import play.mvc.Controller;

public class AdministradorController extends Controller {

	public static void index() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		// Mostra a tela de cadastro
        render("Application/cadAdministrador.html", menu, rodape);
    }
	
	public static void exibicao() {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if (Application.sessao.get("tipo")=="0"){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Usuario> lis = AdmCoral.all();
			
			// Mostra a tela de exibicao
	    	render("Application/exibicaoAdministrador.html", lis, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadCoralista.html", script, menu, rodape);
            return;
		}
    }

    public static void add() {
    	if(! Application.isLogged()) return;
    	
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
    	
    	String msg = "";
    	
    	// Criando o administrador de coral
    	Usuario admin;
    	
    	if(params.get("tipo") != null) {
    		if(params.get("tipo").compareTo("1") == 0)
    			admin = new Secretario();
    		else
    			admin = new Regente();
    	
    		admin.setNome(params.get ("nome"));
    		admin.setEmail(params.get ("email"));
    		admin.setEndereco(params.get ("endereco"));
    		admin.setLogin(params.get ("login"));
    		admin.setNaipe( Integer.parseInt(params.get ("naipe")));
        
    		// Data de nascimento
    		String nasc = params.get ("nascimento");
    		try {
    			Date date = new Date( new SimpleDateFormat("dd/MM/yyyy").parse(nasc).getTime() );
    			admin.setDataNascimento(date);
    		}
    		catch(ParseException ex) {
    			msg += "A data nao esta em formato valido. O formato correto e dd/mm/aaaa.";
        	
    			// Java Script mostrando a mensagem de erro!
    			String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            			script += "alert ( \" " + msg + "\" ) </script> ";
            	render("Application/cadAdministrador.html", script, menu, rodape);
            
            	return;
    		}
        
    		admin.setSenha(params.get ("senha"));
    		admin.setTelefone(params.get ("telefone"));
    	
    		// Validacao dos campos
    		if (admin.getLogin().isEmpty()) {
    			msg += "Login Invalido!";
    		} else if (!(admin.getSenha().equals( params.get("senha2") ))) {
    			msg += "A senha e sua confirmacao nao estao iguais!";
    		} else if(admin.getSenha().length() <= 5) {
    			msg += "A senha deve possuir no minimo 6 caracteres!";
    		} else {
    			// Deu certo! Inserir no banco
        	
    			try {
    				admin.save();
    			}
    			catch(SQLException ex) {
    				msg = "O codigo SQL teve um comportamento inesperado!";
        		
    				// Java Script mostrando a mensagem de erro!
    				String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
                		script += "alert ( \" " + msg + "\" ) </script> ";
                	render("Application/cadAdministrador.html", script, menu, rodape);
                	return;
    			}
        	
    			exibicao();
    			return;
    		}
    	}
    	else {
    		msg = "É obrigatório escolher o tipo do Administrador: Regente ou Secretário.";
    	}
        
        // Java Script mostrando a mensagem de erro!
        String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
        		script += "alert ( \" " + msg + "\" ) </script> ";
        render("Application/cadAdministrador.html", script, menu, rodape);
	}
    
    public static void excluirAdmin(int codigoUsuario) {
    	if(!Application.isLogged()) return;
    	
    	Usuario.delete(codigoUsuario);
    	
    	exibicao();
    }
	
}
